import java.util.*;

/**
 * \* Created with IntelliJ IDEA.
 * \* User: Administrator
 * \* Date: 2021/11/30
 * \* Time: 14:20
 * \* To change this template use File | Settings | File Templates.
 * \* Description:
 * \
 */
public class TestDemo {

    //

    //Map接口
    public static void main(String[] args) {
        //TreeMap有序的，HashMap无序的
        Map<String,String> map=new TreeMap<>();//也是不能实例化自己，一般实例化有TreeMap和HashMap
        map.put("国民男神","朱建辉");//放元素
        map.put("齐天大圣","孙悟空");
        //HashMap在存储的时候，会按照映射存储元素，无序
        System.out.println(map);
    }

    public static void main4(String[] args) {
        Map<String,String> map=new HashMap<>();//也是不能实例化自己，一般实例化有TreeMap和HashMap
        map.put("国民男神","朱建辉");//放元素
        map.put("齐天大圣","孙悟空");
        //HashMap在存储的时候，会按照映射存储元素，无序
        System.out.println(map);
        System.out.println("====================");
        //当我们在里面调用EntrySet的时候，那么就会将k和v进行组装，放到set里面，组成t<Map.Entry<String,String>
        Set<Map.Entry<String,String> >entrySet=map.entrySet();
        for (Map.Entry<String,String>entry:entrySet) {
            System.out.println("key:"+entry.getKey()+"value:"+entry.getValue());
        }
    }

    public static void main3(String[] args) {
        Map<String,String> map=new HashMap<>();//也是不能实例化自己，一般实例化有TreeMap和HashMap
        map.put("国民男神","朱建辉");//放元素
        map.put("齐天大圣","孙悟空");

        //根据k获取value值是啥
        String ret=map.get("齐天大圣");
        //假如没有，返回自定义值
        String ret1=map.getOrDefault("adfa","辉哥");
        System.out.println(ret);

        //是否包含内容

        boolean flg=map.containsKey("国民男神");
        System.out.println(flg);

        Map<String,String> map2=new TreeMap<>();
    }


    //Collection接口
    public static void main2(String[] args) {
        Collection<String> collection=new ArrayList<>();
        collection.add("hello");
        collection.add("hello2");
        System.out.println(collection);
        //打印为什么会有[]呢？我们可以查看ArrayList,不断地继承，直到发现有toString方法
        Object[] objects=collection.toArray();//把元素变成数组，用Objects接收
        System.out.println(Arrays.toString(objects));

        //假如变成以下：
        //会报错，设计到JVM对数组的处理，Java对数组的处理，不建议进行整体的类型转换
        //数组在运行时存储和检查类型信息，整体的元素强制转换了，但是里面的元素 无法转换，内部元素并没有全部进行转换
        //String[] objects1=(String[]) collection.toArray();

//        collection.clear();
//        System.out.println("===================");
//        System.out.println(collection);
//        //判断是否为空
//        System.out.println(collection.isEmpty());
    }

    public static void main1(String[] args) {
        //Collection接口,最上层的接口，也就意味着这个接口可以引用任何一个实现类
        //不能newCollection，因为Collection是一个接口，不能实例化
        //只能让这个接口引用一个实现类
//        Collection collection = new ArrayList();
//        collection.add("hello");
//        collection.add(1);
//
        //问题：我们可以在collection放什么都可以，范围太广。我们想指定放一个数据类型，怎么做？
        //这个时候可以用泛型
        Collection<String> collection = new ArrayList<>();//只能放String类型的参数
        collection.add("hello");
        //collection.add(1);
        //泛型是什么？
        //泛型是一个语法，前面<>指定类型——只能是类类型，不能是简单的基本类型，后面<>可以省略类型
        //
        Collection<Integer>collection1 = new ArrayList<>();
        collection1.add(1);
        collection1.add(2);
        collection1.add(3);


    }
}
